package com.ccom.user.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ccom.api.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    /**
     * 通过用户账号查询用户信息
     *
     * @param username
     * @return
     */
    public User getUserByName(String username);

    /**
     * 通过用户id查询用户信息
     *
     * @param id
     * @return
     */
    public User getUserById(@Param("id") String id);

    /**
     * 根据手机号查询用户信息
     *
     * @param phone
     * @return
     */
    public User getUserByPhone(@Param("phone") String phone);

    /**
     * 根据邮箱查询用户信息
     *
     * @param email
     * @return
     */
    public User getUserByEmail(@Param("email") String email);

    /**
     * 查询被逻辑删除的用户
     */
    List<User> selectLogicDeleted(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

    /**
     * 查询被逻辑删除的用户
     */
    List<User> getAllUser();

    /**
     * 还原被逻辑删除的用户
     */
    int revertLogicDeleted(@Param("userIds") String userIds, @Param("entity") User entity);

    /**
     * 彻底删除被逻辑删除的用户
     */
    int deleteLogicDeleted(@Param("userIds") String userIds);

    /**
     * 更新空字符串为null【此写法有sql注入风险，禁止随便用】
     */
    int updateNullByEmptyString(@Param("fieldName") String fieldName);
}
